package code.whmmm.util.thread;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * <p><b>
 *
 * </b></p>
 * <br/>
 * 创建时间: 9/19/2019 3:09 PM
 *
 * @author Zero
 */
public class ThreadCount {
    private final AtomicInteger atomicInteger;

    public ThreadCount(AtomicInteger atomicInteger) {
        this.atomicInteger = atomicInteger;
    }

    public ThreadCount() {
        this(new AtomicInteger());
    }

    /**
     * 线程数 + 1
     */
    public void add() {
        atomicInteger.incrementAndGet();
    }

    public void add(int num) {
        atomicInteger.set(
                atomicInteger.get() + num
        );
    }

    /**
     * 线程数 -1
     */
    public void decr() {
        atomicInteger.decrementAndGet();
    }

    private void decr(int num) {
        atomicInteger.set(
                atomicInteger.get() - num
        );
    }

    /**
     * 判断当前线程是否 执行完毕,<br/>
     * 为 0 时,执行完毕, 或 未执行
     *
     * @return int
     */
    public boolean isZero() {
        return atomicInteger.get() == 0;
    }

    /**
     * @return boolean
     * @see ThreadCount#isZero()
     */
    public boolean isNotZero() {
        return !isZero();
    }
}
